package in.lib.writer; import in.lib.manager.CacheManager; import java.util.Set; import lombok.Getter; import lombok.Setter; import android.os.AsyncTask; import android.os.Build; public class CacheWriter extends AsyncTask<Object, Void, Void> { @Getter private final String[] filenames; @Setter private WriterListener writerListener; public interface WriterListener { public void onFinishedWriting(); } public CacheWriter(String... filename) { this.filenames = filename; } public CacheWriter(Set<String> filenames) { this.filenames = filenames.toArray(new String[filenames.size()]); } /** * Use this over {@link execute(T... params)} to fix issue with * threadding post HC. * @param params */ public void write(Object... params) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params); } else { execute(params); } } @Override protected Void doInBackground(Object... params) { for (int index = 0; index < filenames.length; index++) { CacheManager.getInstance().writeFile(filenames[index], params[index]); } return null; } @Override protected void onPostExecute(Void result) { if (writerListener != null) { writerListener.onFinishedWriting(); } } }